package com.example.demo.mapper;

import com.example.demo.entity.Book;
import org.apache.ibatis.annotations.*;

import java.util.List;

/**
 * 图书数据访问接口
 */
@Mapper
public interface BookMapper {
    
    /**
     * 查询所有图书
     * 返回图书列表
     */
    @Select("SELECT * FROM book")
    List<Book> findAll();
    
    /**
     * 根据ID查询单本图书
     * @param id 图书ID
     * @return 返回查询到的图书，如果没有返回null
     */
    @Select("SELECT * FROM book WHERE id = #{id}")
    Book findById(Long id);
    
    /**
     * 插入新图书
     * @param book 要插入的图书对象
     * @return 返回影响的行数
     */
    @Insert("INSERT INTO book (name, author, publisher, price, stock) " +
            "VALUES (#{name}, #{author}, #{publisher}, #{price}, #{stock})")
    @Options(useGeneratedKeys = true, keyProperty = "id")  // 设置自动生成主键，并赋值给id属性
    int insert(Book book);
    
    /**
     * 更新图书信息
     * @param book 要更新的图书对象
     * @return 返回影响的行数
     */
    @Update("UPDATE book SET name=#{name}, author=#{author}, publisher=#{publisher}, " +
            "price=#{price}, stock=#{stock} WHERE id=#{id}")
    int update(Book book);
    
    /**
     * 删除图书
     * @param id 要删除的图书ID
     * @return 返回影响的行数
     */
    @Delete("DELETE FROM book WHERE id=#{id}")
    int delete(Long id);
} 